﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ConceptualSample
{
    //有些命令可以将更复杂的操作委托给其他对象--“Receiver”。
    class ComplexCommand : ICommand
    {
        private Receiver _receiver;

        //上下文数据，用于启动接收方的方法
        private string _a;

        private string _b;

        //复杂的命令可以同时接受一个或多个接收者对象
        //通过构造函数处理上下文数据。
        public ComplexCommand(Receiver receiver, string a, string b)
        {
            this._receiver = receiver;
            this._a = a;
            this._b = b;
        }

        //命令可以委托给接收者的任何方法
        public void Execute()
        {
            Console.WriteLine("复杂命令:复杂的事情应该由接收者对象来完成。");
            this._receiver.DoSomething(this._a);
            this._receiver.DoSomethingElse(this._b);
        }
    }
}
